ADVANCED TOPICS IN SCIENTIFIC COMPUTING
2° Year of course - First semester
Frequency Not mandatory
- 6 CFU
- 48 hours
- INGLESE
- Trieste
- Opzionale
- Standard teaching
- Oral Exam
- SSD MAT/08
- Advanced concepts and skills
1. Knowledge and understanding Students will gain a thorough understanding of the theory and practice of computational modeling and scientific computing, with a special emphasis on finite element analysis concepts. They will learn to implement these concepts using modern simulation platforms. The course will cover object-oriented and generic programming paradigms for finite element solvers. Additionally, students will become proficient in using common data structures, algorithms, and relevant libraries and frameworks essential for scientific computing. 2. Applying knowledge and understanding Students will learn to apply their advanced programming skills to solve both familiar and new coding challenges. They will be able to develop advanced numerical solvers, selecting and designing appropriate data structures and algorithms to tackle complex real-world computational problems. They will also acquire the ability to construct simulation tools using modern finite element libraries. 3. Making judgment Students will develop critical thinking and analytical skills, enabling them to assess the effectiveness, flexibility, and efficiency of code implementations. They will be capable of evaluating different approaches to problem-solving and selecting optimal solutions based on informed analysis. By the end of the course, students will have developed the ability to design, implement, test, debug, and optimize complex scientific computing libraries. 4. Communication skills Through class discussions, project writing, and presentations, students will learn to effectively communicate their design decisions, code rationale, and problem-solving strategies. They will become adept at conveying technical information clearly and concisely. 5. Learning skills Students will acquire self-directed learning abilities, enabling them to stay current with state-of-the-art numerical simulation methods and modern libraries for scientific computing. They will be equipped to independently identify and troubleshoot coding issues and propose innovative solutions. They will also gain experience in team-based software development practices by working on group projects.
Prior knowledge of fundamentals about scientific computing, such as numerical interpolation and quadrature and the discretization of differential equations. Knowledge of programming fundamentals (syntax, data types, variables, control structures, functions) is required for this course. Prior experience with advanced programming languages.
The course covers all main ingredients for the numerical solution of Partial Differential Equations (PDEs): mathematical modelling, functional analysis setting, discretization via classical approaches such as Finite Differences (FD) and the Finite Element Method (FEM), numerical analysis, computational implementation. A range of PDE problems will be presented, covering different types of PDEs (elliptic, parabolic, hyperbolic) both linear and non-linear. Each problem is analyzed during the lectures and implemented at the computer practicals. Key aspects such as consistency, stability, and convergence will be thoroughly investigated, providing the guidelines for the correct choice and implementation of numerical methods for a range of problems.
The instructors will provide support material, including lecture notes, and references throughout the course. In addition, there are many free online resources available to supplement the course material. The following books are recommended: - Larsson & Thomee Partial Differential Equations with Numerical Methods. Springer, 2009. - Quarteroni Numerical Models for Differential Problems. Third edition. Springer, 2017. - Morton & Mayers Numerical Solution of Partial Differential Equations. Cambridge, 1994. These books provide in-depth coverage of the course material and can serve as valuable resources for further study.
Elliptic PDEs: boundary value problems, strong maximum principle, well-posedness. Finite Difference (FD) Methods. Discrete Maximum Principle. Consistency, stability, convergence. Basic notions on functional spaces, Weak formulations, Dirichlet principle, Lax-Milgram lemma. The method of Galerkin, Galerkin orthogonality, Cea Lemma. Finite Element Methods (FEM) for elliptic PDEs, implementation, conditioning, error analysis. Interpolation, Bramble-Hilbert lemma. Generalised Galerkin method, truncation error and consistency, Strang Lemma. Convection-diffusion-reaction problems. The streamline diffusion method. Initial and boundary value problems for parabolic PDEs, weak formulations, energy estimates, well posedness. FD and FEM discretisations. Numerical methods for hyperbolic PDEs, method of characteristics, FD methods and the CFL condition. Upwind methods, Lax-Wendroff. Numerical dispersion. Leap-frog method. Discretisations of the wave equation. Conservation laws. The Finite Volume (FV) method. FEM for hyperbolic problems. Tools for Finite Element programming. Data structures and mesh generation, numerical quadrature techniques. Assembling and storage. Introduction to the deal.II Finite Element library. Practical case studies for real-world applications. Hands-on sessions for developing and implementing finite element solvers using deal.II. Visualization tools.
The course will utilize a combination of frontal lectures and live programming demonstrations. During the hands-on sessions, students will have the opportunity to work on problems related to the material covered in the frontal lectures. The solutions to these problems might be discussed, allowing students to receive feedback and gain a deeper understanding of the material. The course is designed to be highly interactive, with ample opportunities for students to ask questions and engage in discussions during both the frontal lectures and hands-on sessions.
To participate in this course, students will be requested to bring their own laptop, ideally equipped with a working Linux or UNIX environment, whether standalone or virtualized. Students are expected to utilize either a text editor, such as Emacs, Vim, or Nano, or an Integrated Development Environment (IDE), such as VSCode, Eclipse, or Code::Blocks, according to their preference.
By oral exam preceded by a written question to be discussed during the oral exam. Students will be required to complete the theoretical and coding exercises left at the lectures to gain access to the oral exam. The maximum achievable grade is 30. Honors may be granted in exceptional cases, provided the final grade exceeds 30. Overall, the evaluation process is designed to encourage students to actively engage with the material and to develop practical skills that will be useful in their future careers
- Goal 9 - Build resilient infrastructure, promote inclusive and sustainable industrialization and foster innovation - Goal 12 - Ensure sustainable consumption and production patterns